/**
 */
package org.mro.grib.model.files.secondEdition.products.util;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.util.Switch;

import org.mro.grib.model.files.secondEdition.products.*;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see org.mro.grib.model.files.secondEdition.products.ProductsPackage
 * @generated
 */
public class ProductsSwitch<T> extends Switch<T> {
	/**
	 * The cached model package
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected static ProductsPackage modelPackage;

	/**
	 * Creates an instance of the switch.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductsSwitch() {
		if (modelPackage == null) {
			modelPackage = ProductsPackage.eINSTANCE;
		}
	}

	/**
	 * Checks whether this is a switch for the given package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @parameter ePackage the package in question.
	 * @return whether this is a switch for the given package.
	 * @generated
	 */
	@Override
	protected boolean isSwitchFor(EPackage ePackage) {
		return ePackage == modelPackage;
	}

	/**
	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the first non-null result returned by a <code>caseXXX</code> call.
	 * @generated
	 */
	@Override
	protected T doSwitch(int classifierID, EObject theEObject) {
		switch (classifierID) {
			case ProductsPackage.IPRODUCT_DEFINITION: {
				IProductDefinition iProductDefinition = (IProductDefinition)theEObject;
				T result = caseIProductDefinition(iProductDefinition);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE40: {
				ProductDefinitionTemplate40 productDefinitionTemplate40 = (ProductDefinitionTemplate40)theEObject;
				T result = caseProductDefinitionTemplate40(productDefinitionTemplate40);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate40);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE41: {
				ProductDefinitionTemplate41 productDefinitionTemplate41 = (ProductDefinitionTemplate41)theEObject;
				T result = caseProductDefinitionTemplate41(productDefinitionTemplate41);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate41);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate41);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE42: {
				ProductDefinitionTemplate42 productDefinitionTemplate42 = (ProductDefinitionTemplate42)theEObject;
				T result = caseProductDefinitionTemplate42(productDefinitionTemplate42);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate42);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate42);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE43: {
				ProductDefinitionTemplate43 productDefinitionTemplate43 = (ProductDefinitionTemplate43)theEObject;
				T result = caseProductDefinitionTemplate43(productDefinitionTemplate43);
				if (result == null) result = caseProductDefinitionTemplate42(productDefinitionTemplate43);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate43);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate43);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE44: {
				ProductDefinitionTemplate44 productDefinitionTemplate44 = (ProductDefinitionTemplate44)theEObject;
				T result = caseProductDefinitionTemplate44(productDefinitionTemplate44);
				if (result == null) result = caseProductDefinitionTemplate42(productDefinitionTemplate44);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate44);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate44);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE45: {
				ProductDefinitionTemplate45 productDefinitionTemplate45 = (ProductDefinitionTemplate45)theEObject;
				T result = caseProductDefinitionTemplate45(productDefinitionTemplate45);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate45);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate45);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE46: {
				ProductDefinitionTemplate46 productDefinitionTemplate46 = (ProductDefinitionTemplate46)theEObject;
				T result = caseProductDefinitionTemplate46(productDefinitionTemplate46);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate46);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate46);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE47: {
				ProductDefinitionTemplate47 productDefinitionTemplate47 = (ProductDefinitionTemplate47)theEObject;
				T result = caseProductDefinitionTemplate47(productDefinitionTemplate47);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate47);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate47);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE48: {
				ProductDefinitionTemplate48 productDefinitionTemplate48 = (ProductDefinitionTemplate48)theEObject;
				T result = caseProductDefinitionTemplate48(productDefinitionTemplate48);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate48);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate48);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE49: {
				ProductDefinitionTemplate49 productDefinitionTemplate49 = (ProductDefinitionTemplate49)theEObject;
				T result = caseProductDefinitionTemplate49(productDefinitionTemplate49);
				if (result == null) result = caseProductDefinitionTemplate45(productDefinitionTemplate49);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate49);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate49);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE410: {
				ProductDefinitionTemplate410 productDefinitionTemplate410 = (ProductDefinitionTemplate410)theEObject;
				T result = caseProductDefinitionTemplate410(productDefinitionTemplate410);
				if (result == null) result = caseProductDefinitionTemplate46(productDefinitionTemplate410);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate410);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate410);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE411: {
				ProductDefinitionTemplate411 productDefinitionTemplate411 = (ProductDefinitionTemplate411)theEObject;
				T result = caseProductDefinitionTemplate411(productDefinitionTemplate411);
				if (result == null) result = caseProductDefinitionTemplate41(productDefinitionTemplate411);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate411);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate411);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE412: {
				ProductDefinitionTemplate412 productDefinitionTemplate412 = (ProductDefinitionTemplate412)theEObject;
				T result = caseProductDefinitionTemplate412(productDefinitionTemplate412);
				if (result == null) result = caseProductDefinitionTemplate42(productDefinitionTemplate412);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate412);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate412);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE413: {
				ProductDefinitionTemplate413 productDefinitionTemplate413 = (ProductDefinitionTemplate413)theEObject;
				T result = caseProductDefinitionTemplate413(productDefinitionTemplate413);
				if (result == null) result = caseProductDefinitionTemplate43(productDefinitionTemplate413);
				if (result == null) result = caseProductDefinitionTemplate42(productDefinitionTemplate413);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate413);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate413);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE414: {
				ProductDefinitionTemplate414 productDefinitionTemplate414 = (ProductDefinitionTemplate414)theEObject;
				T result = caseProductDefinitionTemplate414(productDefinitionTemplate414);
				if (result == null) result = caseProductDefinitionTemplate44(productDefinitionTemplate414);
				if (result == null) result = caseProductDefinitionTemplate42(productDefinitionTemplate414);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate414);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate414);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE415: {
				ProductDefinitionTemplate415 productDefinitionTemplate415 = (ProductDefinitionTemplate415)theEObject;
				T result = caseProductDefinitionTemplate415(productDefinitionTemplate415);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate415);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate415);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE420: {
				ProductDefinitionTemplate420 productDefinitionTemplate420 = (ProductDefinitionTemplate420)theEObject;
				T result = caseProductDefinitionTemplate420(productDefinitionTemplate420);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate420);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE430: {
				ProductDefinitionTemplate430 productDefinitionTemplate430 = (ProductDefinitionTemplate430)theEObject;
				T result = caseProductDefinitionTemplate430(productDefinitionTemplate430);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate430);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE431: {
				ProductDefinitionTemplate431 productDefinitionTemplate431 = (ProductDefinitionTemplate431)theEObject;
				T result = caseProductDefinitionTemplate431(productDefinitionTemplate431);
				if (result == null) result = caseProductDefinitionTemplate430(productDefinitionTemplate431);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate431);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE432: {
				ProductDefinitionTemplate432 productDefinitionTemplate432 = (ProductDefinitionTemplate432)theEObject;
				T result = caseProductDefinitionTemplate432(productDefinitionTemplate432);
				if (result == null) result = caseProductDefinitionTemplate430(productDefinitionTemplate432);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate432);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE440: {
				ProductDefinitionTemplate440 productDefinitionTemplate440 = (ProductDefinitionTemplate440)theEObject;
				T result = caseProductDefinitionTemplate440(productDefinitionTemplate440);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate440);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate440);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE441: {
				ProductDefinitionTemplate441 productDefinitionTemplate441 = (ProductDefinitionTemplate441)theEObject;
				T result = caseProductDefinitionTemplate441(productDefinitionTemplate441);
				if (result == null) result = caseProductDefinitionTemplate42(productDefinitionTemplate441);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate441);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate441);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE442: {
				ProductDefinitionTemplate442 productDefinitionTemplate442 = (ProductDefinitionTemplate442)theEObject;
				T result = caseProductDefinitionTemplate442(productDefinitionTemplate442);
				if (result == null) result = caseProductDefinitionTemplate48(productDefinitionTemplate442);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate442);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate442);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE443: {
				ProductDefinitionTemplate443 productDefinitionTemplate443 = (ProductDefinitionTemplate443)theEObject;
				T result = caseProductDefinitionTemplate443(productDefinitionTemplate443);
				if (result == null) result = caseProductDefinitionTemplate412(productDefinitionTemplate443);
				if (result == null) result = caseProductDefinitionTemplate42(productDefinitionTemplate443);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate443);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate443);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE444: {
				ProductDefinitionTemplate444 productDefinitionTemplate444 = (ProductDefinitionTemplate444)theEObject;
				T result = caseProductDefinitionTemplate444(productDefinitionTemplate444);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate444);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate444);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE445: {
				ProductDefinitionTemplate445 productDefinitionTemplate445 = (ProductDefinitionTemplate445)theEObject;
				T result = caseProductDefinitionTemplate445(productDefinitionTemplate445);
				if (result == null) result = caseProductDefinitionTemplate42(productDefinitionTemplate445);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate445);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate445);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE446: {
				ProductDefinitionTemplate446 productDefinitionTemplate446 = (ProductDefinitionTemplate446)theEObject;
				T result = caseProductDefinitionTemplate446(productDefinitionTemplate446);
				if (result == null) result = caseProductDefinitionTemplate48(productDefinitionTemplate446);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate446);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate446);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE447: {
				ProductDefinitionTemplate447 productDefinitionTemplate447 = (ProductDefinitionTemplate447)theEObject;
				T result = caseProductDefinitionTemplate447(productDefinitionTemplate447);
				if (result == null) result = caseProductDefinitionTemplate412(productDefinitionTemplate447);
				if (result == null) result = caseProductDefinitionTemplate42(productDefinitionTemplate447);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate447);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate447);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE448: {
				ProductDefinitionTemplate448 productDefinitionTemplate448 = (ProductDefinitionTemplate448)theEObject;
				T result = caseProductDefinitionTemplate448(productDefinitionTemplate448);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate448);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate448);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE451: {
				ProductDefinitionTemplate451 productDefinitionTemplate451 = (ProductDefinitionTemplate451)theEObject;
				T result = caseProductDefinitionTemplate451(productDefinitionTemplate451);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate451);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate451);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE491: {
				ProductDefinitionTemplate491 productDefinitionTemplate491 = (ProductDefinitionTemplate491)theEObject;
				T result = caseProductDefinitionTemplate491(productDefinitionTemplate491);
				if (result == null) result = caseProductDefinitionTemplate451(productDefinitionTemplate491);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate491);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate491);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE4254: {
				ProductDefinitionTemplate4254 productDefinitionTemplate4254 = (ProductDefinitionTemplate4254)theEObject;
				T result = caseProductDefinitionTemplate4254(productDefinitionTemplate4254);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate4254);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE41000: {
				ProductDefinitionTemplate41000 productDefinitionTemplate41000 = (ProductDefinitionTemplate41000)theEObject;
				T result = caseProductDefinitionTemplate41000(productDefinitionTemplate41000);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate41000);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE41001: {
				ProductDefinitionTemplate41001 productDefinitionTemplate41001 = (ProductDefinitionTemplate41001)theEObject;
				T result = caseProductDefinitionTemplate41001(productDefinitionTemplate41001);
				if (result == null) result = caseProductDefinitionTemplate41000(productDefinitionTemplate41001);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate41001);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE41002: {
				ProductDefinitionTemplate41002 productDefinitionTemplate41002 = (ProductDefinitionTemplate41002)theEObject;
				T result = caseProductDefinitionTemplate41002(productDefinitionTemplate41002);
				if (result == null) result = caseProductDefinitionTemplate41000(productDefinitionTemplate41002);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate41002);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE41100: {
				ProductDefinitionTemplate41100 productDefinitionTemplate41100 = (ProductDefinitionTemplate41100)theEObject;
				T result = caseProductDefinitionTemplate41100(productDefinitionTemplate41100);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate41100);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate41100);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ProductsPackage.PRODUCT_DEFINITION_TEMPLATE41101: {
				ProductDefinitionTemplate41101 productDefinitionTemplate41101 = (ProductDefinitionTemplate41101)theEObject;
				T result = caseProductDefinitionTemplate41101(productDefinitionTemplate41101);
				if (result == null) result = caseProductDefinitionTemplate41100(productDefinitionTemplate41101);
				if (result == null) result = caseProductDefinitionTemplate40(productDefinitionTemplate41101);
				if (result == null) result = caseIProductDefinition(productDefinitionTemplate41101);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			default: return defaultCase(theEObject);
		}
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>IProduct Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>IProduct Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseIProductDefinition(IProductDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template40</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template40</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate40(ProductDefinitionTemplate40 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template41</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template41</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate41(ProductDefinitionTemplate41 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template42</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template42</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate42(ProductDefinitionTemplate42 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template43</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template43</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate43(ProductDefinitionTemplate43 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template44</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template44</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate44(ProductDefinitionTemplate44 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template45</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template45</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate45(ProductDefinitionTemplate45 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template46</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template46</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate46(ProductDefinitionTemplate46 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template47</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template47</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate47(ProductDefinitionTemplate47 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template48</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template48</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate48(ProductDefinitionTemplate48 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template49</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template49</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate49(ProductDefinitionTemplate49 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template410</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template410</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate410(ProductDefinitionTemplate410 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template411</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template411</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate411(ProductDefinitionTemplate411 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template412</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template412</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate412(ProductDefinitionTemplate412 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template413</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template413</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate413(ProductDefinitionTemplate413 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template414</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template414</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate414(ProductDefinitionTemplate414 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template415</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template415</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate415(ProductDefinitionTemplate415 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template420</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template420</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate420(ProductDefinitionTemplate420 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template430</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template430</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate430(ProductDefinitionTemplate430 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template431</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template431</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate431(ProductDefinitionTemplate431 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template432</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template432</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate432(ProductDefinitionTemplate432 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template440</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template440</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate440(ProductDefinitionTemplate440 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template441</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template441</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate441(ProductDefinitionTemplate441 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template442</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template442</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate442(ProductDefinitionTemplate442 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template443</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template443</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate443(ProductDefinitionTemplate443 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template444</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template444</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate444(ProductDefinitionTemplate444 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template445</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template445</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate445(ProductDefinitionTemplate445 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template446</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template446</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate446(ProductDefinitionTemplate446 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template447</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template447</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate447(ProductDefinitionTemplate447 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template448</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template448</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate448(ProductDefinitionTemplate448 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template451</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template451</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate451(ProductDefinitionTemplate451 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template491</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template491</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate491(ProductDefinitionTemplate491 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template4254</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template4254</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate4254(ProductDefinitionTemplate4254 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template41000</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template41000</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate41000(ProductDefinitionTemplate41000 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template41001</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template41001</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate41001(ProductDefinitionTemplate41001 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template41002</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template41002</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate41002(ProductDefinitionTemplate41002 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template41100</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template41100</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate41100(ProductDefinitionTemplate41100 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Product Definition Template41101</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Product Definition Template41101</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProductDefinitionTemplate41101(ProductDefinitionTemplate41101 object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch, but this is the last case anyway.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
	 * @generated
	 */
	@Override
	public T defaultCase(EObject object) {
		return null;
	}

} //ProductsSwitch
